home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / p_man / cat3 / standard / fixade.z / fixade
Encoding:
Text File  |  1998-10-30  |  8.1 KB  |  199 lines

  1.  
  2.  
  3.  
  4. FFFFIIIIXXXXAAAADDDDEEEE((((3333))))                                                            FFFFIIIIXXXXAAAADDDDEEEE((((3333))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      fixade - misaligned data bus error handler and report generator
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee hhhhaaaannnnddddlllleeee____uuuunnnnaaaalllliiiiggggnnnneeeedddd____ttttrrrraaaappppssss
  13.  
  14.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee lllliiiisssstttt____bbbbyyyy____aaaaddddddddrrrr
  15.  
  16.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ssssuuuummmmmmmmaaaarrrryyyy____lllliiiissssttttiiiinnnngggg
  17.  
  18.      ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee pppprrrriiiinnnntttt____uuuunnnnaaaalllliiiiggggnnnneeeedddd____ssssuuuummmmmmmmaaaarrrryyyy
  19.  
  20. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  21.      _F_i_x_a_d_e is a bus error handler which fields, corrects, and reports bus
  22.      errors arising due to misaligned data in Irix programs.  The MIPS
  23.      architecture, for performance reasons, is very restrictive on the
  24.      alignment of data which can be used with its standard instruction set.
  25.      Usually, the compilers can guarantee this alignment, however, some
  26.      situations exist in which this guarantee cannot be made.  These
  27.      misalignments may be necessary to satisfy Fortran equivalence statements,
  28.      due to mismatched formal/actual parameter types, or due to user-
  29.      instructed suppression of common block padding (via use of the -_a_l_i_g_n
  30.      switches, see _f_7_7(1)).  Unless the bus error arising due to a load or
  31.      store from a misaligned address is caught, it will cause unexpected
  32.      program failure.
  33.  
  34.      Routines in the _f_i_x_a_d_e package provide a bus error handler to catch these
  35.      errors, correct them, and allow the program to continue execution.  They
  36.      also provide a reporting facility so that the causes of these errors can
  37.      be located and remedied.
  38.  
  39.      None of the routines of _f_i_x_a_d_e have arguments.  The routine
  40.      hhhhaaaannnnddddlllleeee____uuuunnnnaaaalllliiiiggggnnnneeeedddd____ttttrrrraaaappppssss _m_u_s_t be called to initialize the handler.  If a
  41.      misaligned reference is encountered prior to calling this initialization
  42.      routine, the reference will produce a core dump. No other routines of the
  43.      trap handler may be called prior to calling this initialization routine.
  44.  
  45.      No other routines of the trap handler need to be called unless a report
  46.      of misaligned references is desired.  A report of misaligned references
  47.      consists of two portions:  a summary of the types of misaligned
  48.      instructions, their counts and relative frequency. (e.g., 'half aligned
  49.      load-word occurred fifteen times, and accounted for 2% of all misaligned
  50.      references'); and a listing based either on the instruction addresses at
  51.      which the faults occurred, _o_r the data addresses producing the faults.
  52.  
  53.      This listing is either an _e_x_h_a_u_s_t_i_v_e listing (default), or a _s_u_m_m_a_r_y
  54.      listing.  The summary listing will list the address (either instruction
  55.      or data, as opted) associated with the fault, and its absolute and
  56.      relative frequency, as a percentage.  The exhaustive listing will list
  57.      _a_l_l instruction/data address pairs producing a fault.  This listing will
  58.      be sorted by the address on which the listing is based (i.e., by
  59.      instruction address or data address).  By default, the listing is
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. FFFFIIIIXXXXAAAADDDDEEEE((((3333))))                                                            FFFFIIIIXXXXAAAADDDDEEEE((((3333))))
  71.  
  72.  
  73.  
  74.      exhaustive.  If only a summary of misalignment errors is desired, the
  75.      routine ssssuuuummmmmmmmaaaarrrryyyy____lllliiiissssttttiiiinnnngggg must be called immediately after the
  76.      initialization routine.
  77.  
  78.      Also by default, the listing is based on instruction addresses. If it is
  79.      desired to base the listing on data addresses, the routine lllliiiisssstttt____bbbbyyyy____aaaaddddddddrrrr
  80.      must be invoked during initialization.
  81.  
  82.      Prior to program exit, the routine pppprrrriiiinnnntttt____uuuunnnnaaaalllliiiiggggnnnneeeedddd____ssssuuuummmmmmmmaaaarrrryyyy may be called
  83.      to print the listing of bus error events, in either _s_u_m_m_a_r_y or _e_x_h_a_u_s_t_i_v_e
  84.      format, as described previously.  This listing will go to the standard
  85.      output.  A sample line of this listing in summary format might be
  86.  
  87.           0x0042445c    1536    33%    67%
  88.  
  89.      where 0x0042445c is the address associated with 1536 faults (33% of the
  90.      total).  The final percentage is cumulative.  Whether the address is of
  91.      the data causing the fault or the instruction at which it occurred is
  92.      indicated in a printed heading.
  93.  
  94.      New options have been added to _f_7_7(1) to generate (much slower) code
  95.      which tolerates misalignments (see _f_7_7(1)).  As discussed previously, use
  96.      of these options will suppress the padding of common usually done by the
  97.      fortran compiler to align elements.  They will also generate code which
  98.      uses pessimistic code sequences to avoid bus errors due to misalignment.
  99.      No bus errors due to misaligned data will occur in modules compiled with
  100.      these new options.
  101.  
  102.      Users desiring to find and repair instances of misaligned data may use
  103.      either instruction addresses to decide which modules need to be specially
  104.      compiled (see _f_7_7(1)), or data addresses to find misalignments.  In
  105.      either case, a symbol table listing produced by _n_m(1), using the -Bgn
  106.      options, will be necessary to map the addresses to routine (or common
  107.      block) names.
  108.  
  109. NNNNOOOOTTTTEEEESSSS
  110.      Similar functionality is available from the Irix kernel by way of the
  111.      _s_y_s_m_i_p_s(_2) call.  This, too, handles the unaligned data traps and
  112.      emulates the memory reference in software but does not generate any
  113.      reports at program termination.
  114.  
  115.      The use of _f_i_x_a_d_e._o is intended for diagnostic purposes only. Program
  116.      efficiency may be severely impacted by its use.  In addition, programs
  117.      using _f_i_x_a_d_e._o may fail to work under future releases of the operating
  118.      system or on future processors.
  119.  
  120. FFFFIIIILLLLEEEESSSS
  121.      /usr/lib/fixade.o
  122.      /usr/lib32/mips3/fixade.o
  123.      /usr/lib32/mips4/fixade.o
  124.      /usr/lib64/mips3/fixade.o
  125.      /usr/lib64/mips4/fixade.o
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. FFFFIIIIXXXXAAAADDDDEEEE((((3333))))                                                            FFFFIIIIXXXXAAAADDDDEEEE((((3333))))
  137.  
  138.  
  139.  
  140. AAAAUUUUTTTTHHHHOOOORRRR
  141.      Larry Weber
  142.      Greg Boyd
  143.  
  144. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  145.      f77(1), sysmips(2)
  146.  
  147. DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
  148.      When making an exhaustive listing, the trap handler's tables may
  149.      overflow.  If this occurs, the message
  150.  
  151.           _n_u_m_b_e_r events not listed due to insufficient table size.
  152.  
  153.      will be printed at the end of the listing.
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.